using System.Collections;
using System.Collections.Generic;
using QFramework;
using UnityEngine;
using XCZProject;

public abstract class PowerUp : GameplayObject
{
    public bool FlyingToPlayer { get; set; } // 是否要飞向角色

    private int FlyingToPlayerFrameCount = 0; // 飞向角色的帧数

    protected abstract void Execute();
    
    private void Update()
    {
        if (FlyingToPlayer)
        {
            if (FlyingToPlayerFrameCount==0)
            {
                // 如果是刚开始飞，则把exp的层级调到最高，就会在角色上面
                GetComponent<SpriteRenderer>().sortingOrder = 5;
            }

            FlyingToPlayerFrameCount++;
				
            if (Player.Default)
            {
                // 获取方向
                //var direction = Player.Default.Position() - transform.Position();
                var direction = Player.Default.DirectionFrom(this); // 相当于上面的方向计算方法

                // 如果帧数小于15，则exp会有一个向后的小位移，然后再向角色飞过去
                if (FlyingToPlayerFrameCount<=15)
                {
                    transform.Translate(direction.normalized * -2 *Time.deltaTime);
                }
                else
                {
                    transform.Translate(direction.normalized * 7 *Time.deltaTime);
                }

                var distance = direction.magnitude; // 计算exp和角色的距离
                // 当exp和角色距离小于0.1时，删除
                if (distance<0.1f)
                {
                    Execute();
                }
            }
        }
    }
    
    protected override Collider2D Collider2D { get; }
}
